package com.example.springsecurity.service;

import com.alibaba.fastjson.JSONObject;
import com.example.springsecurity.domain.Echart;
import com.example.springsecurity.utils.ResultBean;
import org.apache.ibatis.annotations.Param;

import java.util.Date;
import java.util.List;
import java.util.Map;

/**
 * @ClassName ProjectCountEchartsService
 * @Description TODO
 * @Author lvyongwei
 * @Date 2020-10-20 9:30
 **/
public interface ProjectCountEchartsService {

    /**
     * 获取项目学院分布
     * @return
     */
    public List<Map<String,Object>> getCollegeDistribute();

    /**
     * 获取项目专业分布
     * @return
     */
    public List<Map<String,Object>> getMajorDistribute();

    /**
     * 获取校内教学实验布置轮次
     * @param schoolYear
     * @return
     */
    public List<Map<String,Object>> getAssignCount(String schoolYear);

    /**
     * 获取校内教学学生使用人次
     * @param schoolYear
     * @return
     */
    public List<Map<String,Object>> getAssignStudentCount(String schoolYear);

    /**
     * 获取所有项目
     * @param kind
     * @return
     */
    public List<Echart> getAllProject(Integer kind);

    /**
     * 获取共享统计点击量
     * @param ranking 排名   例如：top3,top7
     * @return
     */
    public List<Echart> getClickCount(Integer ranking);

    /**
     * 获取共享统计学习人次
     * @param ranking 排名   例如：top3,top7
     * @param time
     * @return
     */
    public List<Echart> getStudyCount(Integer ranking,Date time);


    /**
     * 获取共享统计完成人次
     * @param ranking
     * @param time
     * @return
     */
    public List<Echart> getFinishCount(@Param("ranking") Integer ranking, @Param("time") Date time);

    /**
     * 获取共享统计学习时长
     * @param ranking
     * @param time
     * @return
     */
    public List<Echart> getStudyTime(@Param("ranking") Integer ranking,@Param("time") Date time);

    /**
     * 获取在共享统计大目录下，某一个实验的成绩分布
     * @param projectId
     * @return
     */
    public List<Map<String,Object>> getScoreDistributeByShare(Integer projectId);

    /**
     * 获取校内教学下的某一个实验成绩分布
     * @param projectId
     * @return
     */
    public List<Map<String,Object>> getScoreDistributeAll(Integer projectId,String time);

    /**
     * 校内教学成绩分布  (获取当前学年该实验是否布置)
     * @param projectId
     * @param time
     * @return
     */
    public Integer getAssignCountById(@Param("projectId") Integer projectId,@Param("time") String time);


    /**
     * 获取详细数据  (校内教学大目录下)
     * @param time
     * @param pageNum
     * @param pageSize
     * @param echarts
     * @return
     */
    public ResultBean getDetailDataAll(Integer pageNum, Integer pageSize, String time, List<Echart> echarts);


    /**
     * 获取详细数据  (共享统计下)
     * @param pageNum
     * @param pageSize
     * @param echarts
     * @return
     */
    public ResultBean getDetailDataShare(Integer pageNum, Integer pageSize, List<Echart> echarts);

    /**
     * 获取所有布置的人数
     * @return
     */
    public Integer getAllAssign();

    /**
     * 获取所有共享体验人次
     * @return
     */
    public Integer getAllShare();

    /**
     * 获取所有必修提交时长
     * @return
     */
    public Double getAllAssignHour();

    /**
     * 获取所有共享提交时长
     * @return
     */
    public Double getAllShareHour();

    /**
     * 获取总注册人数
     * @return
     */
    public Integer getAllRegister();

    /**
     * 获取用户负责的实验项目
     * @param userId
     * @return
     */
    public List<Echart> getProjects(Long userId);

    /**
     * 获取用户负责的共享实验项目
     * @param userId
     * @return
     */
    public List<Echart> getProjectsShare(Long userId);
}
